package com.ayf.payment.game.api.entity;

import com.ayf.payment.game.api.entity.base.BaseEntity;
import com.ayf.payment.game.api.type.ReissueType;

import javax.persistence.Column;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.math.BigDecimal;
import java.util.Date;

@Table(name = "g_reissue_record")
public class ReissueRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * 商户id
     */
    @Column(name = "merchant_id")
    private Integer merchantId;

    @Column(name = "operator_id")
    private Integer operatorId;

    /**
     * 渠道配置名称
     */
    @Column(name = "channel_name")
    private String channelName;

    /**
     * 充值CODE
     */
    @Column(name = "pay_code")
    private String code;

    /**
     * 流水号
     */
    @Column(name = "serial_number")
    private String serialNumber;

    /**
     * 类别：'MANUAL'手动充值；'WHOLE'整区补发
     */
    @Column(name = "reissue_type")
    private ReissueType reissueType;

    /**
     * 分区id
     */
    @Column(name = "partition_id")
    private String partitionId;

    /**
     * 充值账号
     */
    @Column(name = "recharge_number")
    private String rechargeNumber;

    /**
     * 充值金额
     */
    @Column(name = "recharge_amount")
    private BigDecimal rechargeAmount;

    /**
     * 操作ip
     */
    @Column(name = "operate_ip")
    private String operateIp;

    /**
     * 兑换日期INT值yyyyMMdd
     */
    @Column(name = "exchange_time_index")
    private Integer exchangeTimeIndex;

    /**
     * 兑换时间
     */
    @Column(name = "exchange_time")
    private Date exchangeTime;

    /**
     * 订单流水号
     */
    @Column(name = "order_no")
    private String orderNo;

    /**
     * 补发比例
     */
    @Column(name = "reissue_quota")
    private Integer reissueQuota;

    /**
     * 手动补发类型
     */
    @Column(name = "manual_type")
    private String manualType;

    //补发脚本生成情况  -1 失败   1 成功  2 处理中
    @Column(name = "script_status")
    private Integer scriptStatus;

    //整区补发ID
    @Column(name = "rat_id")
    private String ratId;

    /**
     * 分区名称
     */
    @Column(name = "partition_name")
    private String partitionName;

    /**
     * 补发描述
     */
    @Column(name = "remark")
    private String remark;

    /**
     * 赠送明细
     */
    @Column(name = "give_detail")
    private String giveDetail;

    @Transient
    private ReissueAutoType autoTypeObject;

    @Transient
    private ReissueManualType manualTypeObject;

    public Integer getOperatorId() {
        return operatorId;
    }

    public void setOperatorId(Integer operatorId) {
        this.operatorId = operatorId;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    /**
     * 获取商户id
     *
     * @return merchant_id - 商户id
     */
    public Integer getMerchantId() {
        return merchantId;
    }

    /**
     * 设置商户id
     *
     * @param merchantId 商户id
     */
    public void setMerchantId(Integer merchantId) {
        this.merchantId = merchantId;
    }

    /**
     * 获取渠道配置名称
     *
     * @return channel_name - 渠道配置名称
     */
    public String getChannelName() {
        return channelName;
    }

    /**
     * 设置渠道配置名称
     *
     * @param channelName 渠道配置名称
     */
    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    /**
     * 获取流水号
     *
     * @return serial_number - 流水号
     */
    public String getSerialNumber() {
        return serialNumber;
    }

    /**
     * 设置流水号
     *
     * @param serialNumber 流水号
     */
    public void setSerialNumber(String serialNumber) {
        this.serialNumber = serialNumber;
    }

    /**
     * 获取分区id
     *
     * @return partition_id - 分区id
     */
    public String getPartitionId() {
        return partitionId;
    }

    /**
     * 设置分区id
     *
     * @param partitionId 分区id
     */
    public void setPartitionId(String partitionId) {
        this.partitionId = partitionId;
    }

    /**
     * 获取充值账号
     *
     * @return recharge_number - 充值账号
     */
    public String getRechargeNumber() {
        return rechargeNumber;
    }

    /**
     * 设置充值账号
     *
     * @param rechargeNumber 充值账号
     */
    public void setRechargeNumber(String rechargeNumber) {
        this.rechargeNumber = rechargeNumber;
    }

    /**
     * 获取充值金额
     *
     * @return recharge_amount - 充值金额
     */
    public BigDecimal getRechargeAmount() {
        return rechargeAmount;
    }

    /**
     * 设置充值金额
     *
     * @param rechargeAmount 充值金额
     */
    public void setRechargeAmount(BigDecimal rechargeAmount) {
        this.rechargeAmount = rechargeAmount;
    }

    /**
     * 获取操作ip
     *
     * @return operate_ip - 操作ip
     */
    public String getOperateIp() {
        return operateIp;
    }

    /**
     * 设置操作ip
     *
     * @param operateIp 操作ip
     */
    public void setOperateIp(String operateIp) {
        this.operateIp = operateIp;
    }

    /**
     * 获取兑换日期INT值yyyyMMdd
     *
     * @return exchange_time_index - 兑换日期INT值yyyyMMdd
     */
    public Integer getExchangeTimeIndex() {
        return exchangeTimeIndex;
    }

    /**
     * 设置兑换日期INT值yyyyMMdd
     *
     * @param exchangeTimeIndex 兑换日期INT值yyyyMMdd
     */
    public void setExchangeTimeIndex(Integer exchangeTimeIndex) {
        this.exchangeTimeIndex = exchangeTimeIndex;
    }

    /**
     * 获取兑换时间
     *
     * @return exchange_time - 兑换时间
     */
    public Date getExchangeTime() {
        return exchangeTime;
    }

    /**
     * 设置兑换时间
     *
     * @param exchangeTime 兑换时间
     */
    public void setExchangeTime(Date exchangeTime) {
        this.exchangeTime = exchangeTime;
    }

    public ReissueType getReissueType() {
        return reissueType;
    }

    public void setReissueType(ReissueType reissueType) {
        this.reissueType = reissueType;
    }

    public String getManualType() {
        return manualType;
    }

    public void setManualType(String manualType) {
        this.manualType = manualType;
    }

    public ReissueAutoType getAutoTypeObject() {
        return autoTypeObject;
    }

    public void setAutoTypeObject(ReissueAutoType autoTypeObject) {
        this.autoTypeObject = autoTypeObject;
    }

    public ReissueManualType getManualTypeObject() {
        return manualTypeObject;
    }

    public void setManualTypeObject(ReissueManualType manualTypeObject) {
        this.manualTypeObject = manualTypeObject;
    }

    public Integer getScriptStatus() {
        return scriptStatus;
    }

    public void setScriptStatus(Integer scriptStatus) {
        this.scriptStatus = scriptStatus;
    }

    public String getRatId() {
        return ratId;
    }

    public void setRatId(String ratId) {
        this.ratId = ratId;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Integer getReissueQuota() {
        return reissueQuota;
    }

    public void setReissueQuota(Integer reissueQuota) {
        this.reissueQuota = reissueQuota;
    }

    public String getPartitionName() {
        return partitionName;
    }

    public void setPartitionName(String partitionName) {
        this.partitionName = partitionName;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getGiveDetail() {
        return giveDetail;
    }

    public void setGiveDetail(String giveDetail) {
        this.giveDetail = giveDetail;
    }
}